# 文件读写
'''
读写文件是最常见的IO操作。python内置了读写文件的函数，用法和C是兼容的

读写文件前，我们先必须了解一下，在磁盘上读写文件的功能都是由操作系统提供的，现代操作系统不允许普通的程序直接操作磁盘，所以，读写文件就是请求操作系统
打开文件对象(通常称为：文件描述符)，然后操作系统提供的接口从这个文件对象中读取数据(读文件)，或者把数据写入这个文件对象(写文件)
'''

# 读文件
f = open('1.txt', 'r') # 标示符 r 表示：读
print(f) # <_io.TextIOWrapper name='1.txt' mode='r' encoding='cp936'>
r = f.read()
print(r)

f.close() # 打开文件要记得关闭，避免占用操作系统资源，并且操作系统同一时间打开文件的数量也是有限的

print('-' * 100)

# 使用try...except...finally处理文件,避免发生错误的时候后面的代码不执行，导致文件没有close()
try:
    f2 = open('2.txt', 'r')
    print(f2.read())
finally:
    if f2:
        f2.close()

print('-' * 100)

# 但是每次都这么写实在太繁琐了，所以，python提供了一个with语句，可以自动把文件关闭
with open('2.txt', 'r') as f3:
    print(f3.read())

print('-' * 100)
# 一行一行的读取
with open('1.txt', 'r') as f4:
    for line in f4.readlines():
        print(line.strip()) # 把末尾的\n删掉


# 字符编码
f5 = open('1.txt', 'r', encoding='utf-8')
print(f5.read())
f5.close()